package Ventana;

import java.awt.BorderLayout;

import java.awt.Dimension;
import java.awt.EventQueue;
import java.awt.Point;
import java.io.File;
import java.io.IOException;

import javax.swing.ImageIcon;
import javax.swing.JButton;
import javax.swing.JFrame;
import javax.swing.JPanel;
import javax.swing.border.EmptyBorder;

import javax.swing.JTextArea;
import javax.swing.JScrollPane;

import java.awt.Button;
import java.awt.Panel;
import java.awt.event.ActionListener;
import java.awt.event.ActionEvent;
import java.awt.Font;

import javax.swing.JLabel;

import Clases.LeerLibro;

import javax.swing.SwingConstants;

import java.awt.FlowLayout;

/**Ventana que se encarga de mostrar el texto del epub y desde la
 * que podemos cambiar entre capitulos
 */
public class VentanaLectura extends JFrame {

	private JPanel contentPane;
	private JTextArea textArea;
	private int totalCapitulos;
	private int capituloActual;
	private JButton btnCapituloAnterior;
	private JButton btnCapituloSiguiente;
	private LeerLibro l;
	private JPanel panelInferiorBotones;
	private JPanel panelInferiorBotones_1;
	private JPanel panelInferiorPosicion;
	private JLabel lblCapitulo;
	private JScrollPane scrollCentral;
	
	/**
	 * Main de prueba
	 */
	public static void main(String[] args) {
		EventQueue.invokeLater(new Runnable() {
			public void run() {
				try {
					File f = new File("Harry.epub");
					VentanaLectura frame = new VentanaLectura(f);
					frame.setVisible(true);
				} catch (Exception e) {
					e.printStackTrace();
				}
			}
		});
	}

	/**Constructor de la ventana de lectura
	 * @param f Recibe el archivo epub a leer
	 * @throws IOException No deberia saltar nunca si existe el libro
	 */
	public VentanaLectura(File f) throws IOException{
		setDefaultCloseOperation(JFrame.DISPOSE_ON_CLOSE);
		setBounds(100, 100, 607, 441);
		setMinimumSize(new Dimension(500, 500));
		contentPane = new JPanel();
		contentPane.setBorder(new EmptyBorder(0, 0, 0, 0));
		contentPane.setLayout(new BorderLayout(0, 0));
		setContentPane(contentPane);

		Panel panelInferior = new Panel();
		contentPane.add(panelInferior, BorderLayout.SOUTH);
		panelInferior.setLayout(new BorderLayout(0, 0));

		//Cargar libro
		l = new LeerLibro(f);
		totalCapitulos = l.getNumCapitulos();
		capituloActual = 1;

		//Si solo hay un capitulo deshabilitar los botones
		if(totalCapitulos==1){
			btnCapituloSiguiente.setEnabled(false);
		}

		textArea = new JTextArea();
		textArea.setWrapStyleWord(true);
		textArea.setTabSize(0);
		textArea.setLineWrap(true);

		textArea.setEditable(false);
		scrollCentral = new JScrollPane(textArea);
		scrollCentral.getViewport().setViewPosition(new Point(0,0));	//Para que vaya a arriba
		contentPane.add(scrollCentral, BorderLayout.CENTER);


		//Mostrar primer capitulo
		textArea.setText(l.getCapitulo(capituloActual-1));


		panelInferiorBotones_1 = new JPanel();
		panelInferiorBotones_1.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));
		panelInferior.add(panelInferiorBotones_1, BorderLayout.CENTER);

		lblCapitulo = new JLabel("");
		panelInferiorBotones_1.add(lblCapitulo);
		lblCapitulo.setFont(new Font("Tahoma", Font.PLAIN, 23));
		lblCapitulo.setHorizontalAlignment(SwingConstants.CENTER);
		lblCapitulo.setText(capituloActual+"/"+totalCapitulos);
		lblCapitulo.setText(capituloActual+"/"+totalCapitulos);


		btnCapituloAnterior = new JButton();
		btnCapituloAnterior.setIcon(new ImageIcon("iconos/history-previous.png")); 
		panelInferiorBotones_1.add(btnCapituloAnterior);
		btnCapituloAnterior.setEnabled(false);
		btnCapituloAnterior.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Runnable r = new Runnable (){
					public void run() {
						btnCapituloAnterior.setEnabled(false);
						btnCapituloSiguiente.setEnabled(false);
						capituloActual--;
						textArea.setText(l.getCapitulo(capituloActual-1));
						btnCapituloAnterior.setEnabled(true);
						if(capituloActual==1){
							btnCapituloAnterior.setEnabled(false);
						}
						btnCapituloSiguiente.setEnabled(true);
						lblCapitulo.setText(capituloActual+"/"+totalCapitulos);
						scrollCentral.getViewport().setViewPosition(new Point(0,0));	//Para posicionarlo arriba
					}
				};
				Thread t = new Thread(r);
				t.start();
			}
		});

		Button btnSalir = new Button("Salir");
		panelInferiorBotones_1.add(btnSalir);
		btnSalir.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent arg0) {
				dispose();
			}
		});
		btnSalir.setFont(new Font("Dialog", Font.PLAIN, 30));

		btnCapituloSiguiente = new JButton();
		btnCapituloSiguiente.setIcon(new ImageIcon("iconos/history-next.png")); 
		panelInferiorBotones_1.add(btnCapituloSiguiente);
		btnCapituloSiguiente.addActionListener(new ActionListener() {
			public void actionPerformed(ActionEvent e) {
				Runnable r = new Runnable (){
					public void run() {
						btnCapituloAnterior.setEnabled(false);
						btnCapituloSiguiente.setEnabled(false);
						capituloActual++;
						textArea.setText(l.getCapitulo(capituloActual-1));
						btnCapituloSiguiente.setEnabled(true);
						if(capituloActual==totalCapitulos){
							btnCapituloSiguiente.setEnabled(false);
						}
						btnCapituloAnterior.setEnabled(true);
						lblCapitulo.setText(capituloActual+"/"+totalCapitulos);
						scrollCentral.getViewport().setViewPosition(new Point(0,0));	//Para posicionarlo arriba
					}
				};
				Thread t = new Thread(r);
				t.start();
			}
		});

		panelInferiorPosicion = new JPanel();
		panelInferiorBotones_1.add(panelInferiorPosicion);
		panelInferiorPosicion.setLayout(new FlowLayout(FlowLayout.CENTER, 10, 10));

		panelInferiorBotones = new JPanel();
		panelInferiorBotones_1.add(panelInferiorBotones);
		panelInferiorBotones.setLayout(new FlowLayout(FlowLayout.CENTER, 5, 5));

	}

}